package io.github.wslxm.springbootplus2.core.base.service.impl;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.github.wslxm.springbootplus2.core.utils.XjFieldUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.client.RestTemplate;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.util.LinkedList;


/**
 * 通用 IService + baseMapper  ===>  所有service 继承 BaseIService
 *
 * @author 王松
 * @WX-QQ 1720696548
 * @date 2019/10/31 21:12
 */
@Slf4j
public class BaseServiceImpl<M extends BaseMapper<T>, T> extends ServiceImpl<M, T> {

    @Value("${spring.application.name:null}")
    protected String applicationName;

    @Autowired
    protected HttpServletRequest request;
    @Autowired
    protected HttpServletResponse response;

    /**
     * rpc工具,可以直接发起http请求
     */
    @Autowired
    protected RestTemplate restTemplate;
    /**
     * 数据库操作
     * execute：可以执行所有SQL语句，没有返回值, 一般用于执行DDL语句。
     * update：用于执行INSERT、UPDATE、DELETE等DML语句。
     * queryXxx：用于DQL数据查询语句。
     */
    @Autowired
    protected JdbcTemplate jdbcTemplate;

    /**
     *  获取当前实体类字段
     * @param isUnderline 返回的字段name 是否自动转为下划线命名
     * @date 2025/1/21 16:24
     * @return java.util.LinkedList<java.lang.String>
     */
    protected LinkedList<String> getFieldNames(boolean isUnderline) {
        return XjFieldUtil.getFieldNames(super.getEntityClass(), isUnderline);
    }
}



